package com.hmall.mapper;

import com.hmall.model.MallAuction;
import com.hmall.util.MyMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Repository
public interface MallAuctionMapper extends MyMapper<MallAuction> {

    /**
     * @Date 2018/12/26 14:15
     * @Param [type]
     * @return int
     * @Description  根据状态得到相应的竞拍项
     */
    int selectCountByStatus(@Param("status") Integer type);

    /**
     * @Date 2018/12/26 14:16
     * @Param [type, start, end]
     * @return java.util.List<com.hmall.model.MallAuction>
     * @Description  分页获得竞拍列表
     */
    List<MallAuction> selectByStatus(@Param("status") Integer type, @Param("start") int start, @Param("end") int end);

    /**
     * @Date 2018/12/26 14:16
     * @Param [packageNo]
     * @return com.hmall.model.MallAuction
     * @Description  根据竞拍编号得到竞拍具体内容
     */
    MallAuction selectByPackageNo(@Param("packageNo") Long packageNo);

    /**
     * @Date 2018/12/26 14:17
     * @Param [packageNo, status]
     * @return void
     * @Description  更新具体某个竞拍项的状态
     */
    void updateStatus(@Param("packageNo") Long packageNo, @Param("status") int status);

    /**
     * @Date 2018/12/26 14:56
     * @Param [packageNo, highestPrice, highestUserId]
     * @return void
     * @Description  有人竞拍成功之后的更新包括价格和人，根据竞拍编号
     */
    void updateAuctionSuccess(@Param("packageNo") Long packageNo, @Param("highestPrice") BigDecimal highestPrice);

    /**
     * @Date 2018/12/26 15:44
     * @Param [nowTime]
     * @return java.util.List<java.lang.Long>
     * @Description  根据时间得到正在竞拍的竞拍编号列表
     */
    List<Long> selectGoingByTime(@Param("nowTime") Date nowTime);

    /**
     * @Date 2018/12/27 14:56
     * @Param [packageNo]
     * @return void
     * @Description 每当成功进行一次竞拍增加竞拍次数
     */
    void addAuctionCount(@Param("packageNo") Long packageNo);

    /**
     * @Date 2019/1/9 15:39
     * @Param [nowTime, userId] 
     * @return java.util.List<java.lang.Long>
     * @Description 列出当前正在竞拍的自己有权限的竞拍的编号列表
     */
    List<Long> selectGoingByTimeWithAuth(@Param("nowTime") Date nowTime, @Param("userId") Integer userId);
}